#include<stdio.h>
#include<string.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>
int main()
{
   //系统接口
   const char* msg1 = "hello 标准输出\n";
   write(1,msg1,strlen(msg1));

   //C语言接口
   printf("hello printf\n");
   fprintf(stdout,"hello fprintf\n");
   fputs("hello fputs\n",stdout);
   fflush(stdout);
   fork();
   return 0;
}
// int main()
// {
//    close(1);
//    int fd = open("./log.txt",O_CREAT | O_WRONLY,0644);
//    printf("fd:%d\n",fd);
//    fprintf(stdout,"hello Mango\n");

//    fflush(stdout);
//    close(fd);
//    return 0;
// }
// int main()
// {
//     const char* msg1 = "Hello 标准输出\n";
//     write(1,msg1,strlen(msg1));//向标准输出写入数据

//     const char* msg2 = "Hello 标准错误\n";
//     write(2,msg2,strlen(msg2));//向标准错误写入

//     printf("hello printf\n");
//     fprintf(stdout,"hello fprintf\n");
//     close(1);
//     return 0;
// }
// int main()
// {
//     const char* msg1 = "Hello 标准输出\n";
//     write(1,msg1,strlen(msg1));//向标准输出写入数据
//     const char* msg2 = "Hello 标准错误\n";
//     write(2,msg2,strlen(msg2));//向标准错误写入
//     return 0;
// }
// int main()
// {
//     int fd = open("./log.txt",O_RDONLY);
//     if(fd < 0)
//     {
//         perror("open");
//         return 1;
//     }
//     dup2(fd,0); //原本从键盘读取内容，现在从文件中读取内容
//     char buffer[1024];
//     scanf("%s",buffer);
//     printf("%s\n",buffer);
//     return 0;
// }
// int main()
// {
//     int fd = open("./log.txt",O_WRONLY |O_CREAT|O_APPEND,0644);
//     if(fd<0)
//     {
//         //打开文件失败
//         perror("open");
//         return 1;
//     }   
//     dup2(fd,1);//把本来输出到显示器的内容输出到文件中
//     //fd_array[1]本来是指向stdout,现在变成了指向log.txt
//     printf("hello Mango\n");
//     fprintf(stdout,"hello Mango-\n");
//     fputs("hello Mango+\n",stdout);
//     return 0;
// }
// int main()
// {
//     close(1);
//     int fd = open("./log.txt",O_CREAT | O_WRONLY,0644);
//     printf("fd:%d\n",fd);
//     return 0;
// }

// int main()
// {
//     close(0);
//     int fd = open("./log.txt",O_CREAT | O_WRONLY,0644);
//     printf("fd:%d\n",fd);
//     return 0;
// }
//int main()
//{
//  int fd1 = open("./log.txt",O_CREAT | O_WRONLY,0644);
//  int fd2 = open("./log2.txt",O_CREAT | O_WRONLY,0644);
// printf("fd1:%d fd2:%d\n",fd1,fd2);
// return 0;
//}
//int main()
//{
//  int fd = open("hello.txt",O_RDONLY);
//  printf("%d\n",fd);
//  return 0;
//}
//int main()
//{
//  FILE* pf = fopen("./log.txt","w");
//  if(NULL == pf)
//  {
//    perror("fopen");
//    return 1;
//  }
//  //写文件
//  const char* msg = "hello\n";
//  int count = 5;
//  while(count --)
//  {
//    fputs(msg,pf);
//  }
//  
//  return 0;
//}
////int main()
//{
//  char buffer[64];
//  ssize_t s = read(0,buffer,sizeof(buffer));
//  buffer[s] = 0;
//  printf("echo# %s",buffer);
//  return 0;
//}
//int main()
//{
//  const char* msg = "hello I am Mango\n";
//  write(2,msg,strlen(msg));
//  write(2,msg,strlen(msg));
//  write(2,msg,strlen(msg));
//  write(2,msg,strlen(msg));
//  return 0;
//}
//int main()
//{
//  //fopen("./log.txt","w")
//  int fd = open("./log.txt",O_WRONLY | O_CREAT,0644);
//  int fd1 = open("./log1.txt",O_WRONLY | O_CREAT,0644);
//  int fd2 = open("./log2.txt",O_WRONLY | O_CREAT,0644);
//  int fd3 = open("./log3.txt",O_WRONLY | O_CREAT,0644);
//  if(fd<0)
//  {
//    printf("open error\n");
//    return 1;
//  }
//  printf("fp:%d\n",fd);
//  printf("fp:%d\n",fd1);
//  printf("fp:%d\n",fd2);
//  printf("fp:%d\n",fd3);
//  close(fd);
//  return 0;
//}
//int main()
//{
//  //fopen("./log.txt","w");
//  int fd = open("./log.txt",O_RDONLY);
//  if(fd<0)
//  {
//    printf("open error\n");
//    return 1;
//  }
//  char buffer[1024];
//  size_t s = read(fd,buffer,sizeof(buffer)-1);
//  if(s > 0)
//  {
//    buffer[s] = 0;
//    printf("%s",buffer);
//  }
//  close(fd);
//  return 0;
//}

//#include<stdio.h>
//int main()
//{
//  const char* msg = "hello I am Mango\n";
//  fputs(msg,stderr);
//  return 0;
//}
//#include<stdio.h>
//int main()
//{
//  FILE* fp = fopen("./log.txt","r");//以只读的方式打开当前路径下的log.txt文件
//  if(NULL == fp)
//  {
//    perror("fopen");
//    return (1);
//  }
//  //打开文件成功
//  char buffer[64];
//  while(fgets(buffer,sizeof(buffer),fp))
//  {
//    printf("%s",buffer);
//  }
//  if(!feof(fp))
//  {
//    printf("fgets exit abnormally!\n");
//  }
//  else
//  {
//    printf("fgets exit normally!\n");
//  }
//  fclose(fp);
//  return 0;
//}
